from langchain_ollama import ChatOllama
llm = ChatOllama(
    model="deepseek-r1:8b",
    # model="gemma3:1b",
    base_url="http://localhost:11434",  # Ollama 服务地址
    temperature=0.7,  # 创造性程度
    num_predict=1024,  # 最大生成长度
)

# 设定 AI 的角色和目标
role_template = "你是一个为花店电商公司工作的AI助手, 你的目标是帮助客户根据他们的喜好做出明智的决定"

# TOT 提供 Few-Shot Learning 示例
tot_template = """
假设一个顾客在鲜花网站上询问：“我想为我的妻子购买一束鲜花，但我不确定应该选择哪种鲜花。她喜欢淡雅的颜色和花香。”
 AI（使用 ToT 框架）：
 思维步骤 1：理解顾客的需求。顾客想为妻子购买鲜花。顾客的妻子喜欢淡雅的颜色和花香。
 思维步骤 2：考虑可能的鲜花选择。
  候选 1：百合，因为它有淡雅的颜色和花香。
  候选 2：玫瑰，选择淡粉色或白色，它们通常有花香。
  候选 3：紫罗兰，它有淡雅的颜色和花香。
  候选 4：桔梗，它的颜色淡雅但不一定有花香。
  候选 5：康乃馨，选择淡色系列，它们有淡雅的花香。 
思维步骤 3：根据顾客的需求筛选最佳选择。
  百合和紫罗兰都符合顾客的需求，因为它们都有淡雅的颜色和花香。
  淡粉色或白色的玫瑰也是一个不错的选择。
  桔梗可能不是最佳选择，因为它可能没有花香。
  康乃馨是一个可考虑的选择。 
思维步骤 4：给出建议。“考虑到您妻子喜欢淡雅的颜色和花香，我建议您可以选择百合或紫罗兰。淡粉色或白色的玫瑰也是一个很好的选择。希望这些建议能帮助您做出决策！
"""
from langchain.prompts import ChatPromptTemplate, HumanMessagePromptTemplate, SystemMessagePromptTemplate
system_prompt_role = SystemMessagePromptTemplate.from_template(role_template)
system_prompt_tot = SystemMessagePromptTemplate.from_template(tot_template)

# 用户的询问
human_template = "{human_input}"
human_prompt = HumanMessagePromptTemplate.from_template(human_template)

# 将以上所有信息结合为一个聊天提示
chat_prompt = ChatPromptTemplate.from_messages([system_prompt_role, system_prompt_tot, human_prompt])

prompt = chat_prompt.format_prompt(human_input="我想给朋友买一束花。我喜欢黑色带刺的。你有什么建议吗?").to_messages()
print('prompt:',prompt)

# 接收用户的询问，返回回答结果
response = llm.invoke(prompt)

print('response:',response.content)